package com.android.jogomemoria;

import java.util.Collections;
import java.util.List;
import java.util.Vector;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
	public int tamanhoMatriz = 0;
	
	public static Integer[] DEFAULT_IMAGES={ 
    	
		R.drawable.turismoalto, R.drawable.turismofeiracaruaru, R.drawable.turismosaojoaocaruaru,
		R.drawable.turismocamaramunicipal, R.drawable.turismofeiracaruaru2, R.drawable.turismosaojoao2};
	
	private List<Imagem> imagens= new Vector<Imagem>();
	private Context mContext;
	int dificuldade;
	
	//Recebe um parametro com a dificuldade
    public ImageAdapter(Context c, int dificuldade) {
        mContext = c;
        this.dificuldade = dificuldade;
        this.embaralhaImagens();
    }
    
    public ImageAdapter(Context c, List<Imagem> imagens) {
        mContext = c;
        this.embaralhaImagens(imagens);
    }
    
    //Chama o metodo getMatrizDificuldade, de acordo com o tamanho maximo do array de fotos
    private void embaralhaImagens(){
        int size=getMatrizDificuldade(ImageAdapter.DEFAULT_IMAGES.length);
        for(int i=0;i<size;i++){
			//indice par da lista
			this.imagens.add(new Imagem(ImageAdapter.DEFAULT_IMAGES[i]));
			//indice impar da lista
			this.imagens.add(new Imagem(ImageAdapter.DEFAULT_IMAGES[i]));
		}
    	Collections.shuffle(this.imagens);
    }
    //passe a lista de imagens recebdas do banco
    private void embaralhaImagens(List<Imagem> imagens){
    	this.imagens.addAll(imagens);
        //Collections.shuffle(this.imagens);
    }

    public int getCount() {
        return this.imagens.size();
    }

    public Object getItem(int position) {
        return null;
    }
    
    //Aqui se altera o tamanho da matriz e a dificuldade
    public int getMatrizDificuldade(int tamanhoTotal)
    {
    	switch (dificuldade) {
    	case 1://Dificuldade mais simples
    		tamanhoMatriz = 4;
    		break;
    	case 2://Dificuldade normal
    		tamanhoMatriz = 6;
    		break;
    	case 3://Dificuldade mais dificil
    		tamanhoMatriz = 12;
    		break;
    	default:
    		break;
    	}
    	return tamanhoMatriz;
    }
    
    public long getItemId(int position) {
        return this.imagens.get(position).getIdRecurso();
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(imagens.get(position).getIdRecurso());
        return imageView;
    }

	public List<Imagem> getImagens() {
		return imagens;
	}
	
	public void setImagens(List<Imagem> imagens) {
		this.imagens = imagens;
	}
	
	public int getTamanhoMatriz() {
		return tamanhoMatriz;
	}

}

